package org.rslai.tcedit.web.service;

import javax.activation.DataHandler;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlMimeType;
import javax.xml.ws.soap.MTOM;

/**
 * TCagentWebService 接口
 * @author rslai
 */
@WebService
@MTOM
public interface TCagentWebService {

	/**
	 * 配置运行环境<br>
	 * 下载安装所有运行时的支持库，再次调用时清除之前安装内容重新安装
	 */
	@WebMethod
	@WebResult
	public CallResult configEnvironment();

	/**
	 * 上传脚本<br>
	 * 脚本以二进制 zip 压缩包方式上传 agent
	 * @param testScriptInfo 测试脚本信息，存放 产品 ID、版本 ID、脚本 ID
	 * @param scriptData 测试脚本 zip 包
	 */
	@WebMethod
	@WebResult
	public CallResult uploadTestScript(@WebParam TestScriptInfo testScriptInfo, @XmlMimeType("application/octet-stream") @WebParam DataHandler scriptData);

	/**
	 * 运行测试用例<br>
	 * 测试用例的自然语言存放在 testCaseStr 中
	 * @param runConf 运行时配置，例如：被测网站的url、浏览器类型等等
	 * @param testCaseInfo 测试用例信息
	 * @param testCaseStr 测试用例内容字符串
	 */
	@WebMethod
	@WebResult
	public CallResult runTestCase(@WebParam RunConf runConf, @WebParam TestCaseInfo testCaseInfo, @WebParam String testCaseStr);

	/**
	 * 返回当前状态
	 */
	@WebMethod
	@WebResult
	public StatusInfo getCurrentStatus();

	/**
	 * 强制释放<br>
	 * 释放掉此 Agent 的占用，结束当前运行的脚本
	 */
	@WebMethod
	@WebResult
	public CallResult forcedRelease();

	/**
	 * 清除所有测试脚本
	 */
	@WebMethod
	@WebResult
	public CallResult cleanTestScript();

	/**
	 * 清理垃圾文件<br>
	 * 1、Firefox Profile 内容
	 */
	@WebMethod
	@WebResult
	public CallResult cleanJunkFiles();

}
